package personal.lijun.skeleton.spring.springcloud.serviceprovider.service;

import personal.lijun.skeleton.spring.springcloud.serviceprovider.data.CalendarUser;
import personal.lijun.skeleton.spring.springcloud.serviceprovider.data.Role;
import personal.lijun.skeleton.springcloud.common.data.ApiResultPrimitiveValue;

import java.util.List;
import java.util.Map;

public interface CalendarUsersService {
    /**
     * 保存用户
     * @param record 用户信息
     */
     CalendarUser save(CalendarUser record);

    /**
     * 增加一个新用户信息
     * @param record
     * @return
     */
    CalendarUser addNewCalendarUsers(CalendarUser record);

    /**
     * 更新指定用户信息
     * @param record
     * @return
     */
     CalendarUser updateCalendarUsers(CalendarUser record);

    /**
     * 根据id删除指定用户
     * @param id 用户id
     * @return
     */
    Integer deleteCalendarUsersById(Long id);

    /**
     * 查询指定id的用户信息
     * @param id 用户id
     * @return
     */
    CalendarUser getCalendarUsersById(Long id);

    /**
     * 根源邮件查询用户
     * @param email
     * @return
     */
    CalendarUser findUserByEmail(String email);
    /**
     * 根据邮件模糊查询用户信息
     * @param email 邮件
     * @return
     */
    List<CalendarUser> findUsersByPartialEmail(String email);

    /**
     * 根据用户id，查询此用户的所属角色
     * @param userId 用户id
     * @return
     */
    List<Role> findUserRoles(Long userId);

    /**
     * 根据登录账号，获取登录人信息
     * @param email
     * @return
     */
    CalendarUser getByLoginName(String email);

    /**
     * 修改用户密码
     * @param userId
     * @param salt
     * @param password
     * @return
     */
    int changePassword(long userId, String salt, String password);

    /**
     * 分页查询用户信息
     * @param name 用户名
     * @param locked 是否锁定
     * @param sort 排序表达式
     * @param offset 查询第几页
     * @param limit 每页大小
     * @return
     */
     List<CalendarUser> getUserList(String name,  Boolean locked,
                                          String sort, int offset, int limit);

}